package com.oracle.config.service.impl.filter;

import com.alibaba.dubbo.common.extension.Activate;
import com.alibaba.dubbo.rpc.*;

/**
 * 因为它使用的是SPI机制，我们需要通过SPI机制告诉dubbo
 * 按照dubboSPI的规定需要在resources下创建 META-INF/dubbo
 * 写文件名为 com.alibaba.dubbo.rpc.Filter
 */
//@Activate(group = "provider")
public class SystemServiceFilter implements Filter {
    @Override
    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
        System.out.println("服务提供方的过滤器执行");
        RpcContext rpcContext = RpcContext.getContext();
        String secretToken = rpcContext.getAttachment("secret");
        System.out.println(secretToken);
        if(secretToken==null || !"SDUENK7IASJD9#DIASD$JDA998".equals(secretToken)){
            throw new RpcException("非法的RPC调用请求");
        }

        return invoker.invoke(invocation);
    }
}
